import axios from 'axios';
import { ElMessage } from 'element-plus';
// 定义基础的axios实例，并设置默认的baseURL

// const baseUrl = 'https://vip.lnqlyy.cn/';
// const baseUrl = 'http://129.151.238.145:7100/';
const baseUrl = '/apis';

// console.log('baseUrl',baseUrl)
const instance = axios.create({
    baseURL: baseUrl,
    // 以下可以继续配置其他常用的设置，比如超时时间等，这里举例设置超时时间为5000毫秒
    timeout: 60000,
    headers: {   // 请求头
        'Content-Type': 'application/json;charset=UTF-8'
    }
});

// 请求拦截器，可在这里添加通用的请求头、处理token等操作（以下是简单示例，可根据实际情况完善）
instance.interceptors.request.use(
    config => {
        // 例如，添加Authorization头（假设从本地存储获取token）
        const token = localStorage.getItem('token');
        if (token) {
            // 将token添加到请求数据中，假设请求数据是一个JSON对象
            if (config.data) {
                config.data.token = token;
            } else {
                config.data = { token };
            }
        }
        return config;
    },
    error => {
        return Promise.reject(error);
    }
);

// 响应拦截器，用于处理响应数据、统一的错误提示等（以下是简单示例，可根据实际情况完善）
instance.interceptors.response.use(
    response => {
        console.log('response',response)
        // 可以在这里对响应数据进行统一处理，比如判断状态码等
        // if (response.status === 200 && response.data.code === 1) {
        //     return response.data.data;
        // }
        if (response.status === 200) {
            return response.data.data;
        }
        return Promise.reject(response.data);
    },
    error => {
        // 统一处理错误情况，比如根据不同的错误状态码显示不同的提示信息（结合Element Plus的提示组件）
        if (error.response) {
            const { status } = error.response;
            switch (status) {
                case 401:
                    // 使用Element Plus的Message组件弹出提示（需先引入并注册）
                    ElMessage.error('未授权，请重新登录');
                    break;
                case 404:
                    ElMessage.error('请求资源不存在');
                    break;
                default:
                    ElMessage.error('请求出错，请稍后再试');
            }
        }
        return Promise.reject(error);
    }
);

// 导出封装好的axios实例，方便在其他组件中使用
export default instance;